﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Text;
using com.clinica.business.BE.actcliente;
using com.clinica.business.BE.comun;
using com.clinica.business.BL.interfaces.actcliente; 
using com.clinica.DL.sql.actcliente;
using com.clinica.DL.sql.comun;
using com.clinica.business.entities;
using System.Configuration;
namespace com.clinica.business.BL.actcliente
{
    [ServiceBehavior(Name = "ClienteBL",
  Namespace = "http://com.clinica.business.BL.interfaces.actcliente",
  ConcurrencyMode = ConcurrencyMode.Multiple,
  InstanceContextMode = InstanceContextMode.PerSession,
  IncludeExceptionDetailInFaults = true)]
    public class ClienteBL : IClienteBL
    {
        #region IClienteBL Members

        public List<ClienteBE> ObtenerClientes(ClienteBE request)
        {
            List<ClienteBE> lstClientes = new List<ClienteBE>();
            try
            {
                lstClientes = ClienteDL.ObtenerClientes(request);
                //foreach (ClienteBE item in lstClientes)
                //{
                //    if (item.FechaEmision != null)
                //        item.FechaEmisionVista = item.FechaEmision.ToString("dd/MM/yyyy").Substring(0, 10);
                //}

            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }

            return lstClientes;
        }

        public int ActualizarCliente(int Accion, ClienteBE request)
        {
            int Codcli = 0;
            List<ClienteBE> lst = new List<ClienteBE>();
            try
            {
                lst = ClienteDL.ActualizarCliente(Accion, request);
                foreach (ClienteBE item in lst)
                {
                    Codcli = item.Codcliente;
                }

            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }
            return Codcli;
        }

        public List<ClienteBE> ObtenerCliente(ClienteBE request)
        {
            List<ClienteBE> lstCliente = new List<ClienteBE>();
            try
            {
                lstCliente = ClienteDL.ObtenerCliente(request);
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }

            return lstCliente;
        }

        #endregion

        #region IClienteBL Members


        public List<ParametrosBE> ObternerTipoDocumento(ParametrosBE request)
        {
            List<ParametrosBE> lstResult = new List<ParametrosBE>();
            try
            {
                lstResult = ParametrosDL.ObtenerTabla(request);
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }

            return lstResult;
        }

        public List<ParametrosBE> ObternerTipoCliente(ParametrosBE request)
        {
            List<ParametrosBE> lstResult = new List<ParametrosBE>();
            try
            {
                lstResult = ParametrosDL.ObtenerTabla(request);
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }

            return lstResult;
        }

        public List<ParametrosBE> ObternerTipoDocIdent(ParametrosBE request)
        {
            List<ParametrosBE> lstResult = new List<ParametrosBE>();
            try
            {
                lstResult = ParametrosDL.ObtenerTabla(request);
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }

            return lstResult;
        }
        public List<ParametrosBE> ObternerDistrito(ParametrosBE request)
        {
            List<ParametrosBE> lstResult = new List<ParametrosBE>();
            try
            {
                lstResult = ParametrosDL.ObtenerTabla(request);
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
            }

            return lstResult;
        }
        #endregion

        #region IClienteBL Members

        #region ILiquidacionBL Members


        public void EliminarCliente(ClienteBE request)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: Eliminar Clientes
             * Autor      : JPEREZ
             * Fecha      : 2011-07-14
             ****************************************************************************************/

            try
            {
                ClienteDL.EliminarCliente(request);
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
                //new ErrorSGC(1,ex.Message)
            }
        }

        #endregion
        //public List<DocumentoPagoBE> ObternerConsumos(DocumentoPagoBE request)
        //{
        //    List<DocumentoPagoBE> lstLiquidaciones = new List<DocumentoPagoBE>();
        //    try
        //    {
        //        lstLiquidaciones = DocumentoPagoDL.ObtenerConsumos(request);
        //        foreach (DocumentoPagoBE item in lstLiquidaciones)
        //        {
        //            if (item.FechaEmision != null)
        //                item.FechaLiqVista = item.FechaLiq.ToString("dd/MM/yyyy").Substring(0, 10);
        //        }

        //    }
        //    catch (Exception ex)
        //    {
        //        FaultReason err = new FaultReason(ex.Message);
        //        throw new FaultException(err);
        //    }

        //    return lstLiquidaciones;
        //}
        //public List<DocumentoPagoBE> ObternerLiquidacion(DocumentoPagoBE request)
        //{
        //    List<DocumentoPagoBE> lstLiquidaciones = new List<DocumentoPagoBE>();
        //    try
        //    {
        //        decimal decTotPrecio = 0;
        //        decimal decTotDescuento = 0;
        //        decimal decTotIgv = 0;
        //        decimal decTotNeto = 0;
        //        decimal decPorcIGV = 0;
        //        ParametrosBE oparm = new ParametrosBE();
        //        List<ParametrosBE> lstParm = new List<ParametrosBE>();
        //        lstLiquidaciones = DocumentoPagoDL.ObtenerLiquidacion(request);   
        //        oparm.NombreTabla = "MONIGV";
        //        lstParm = ParametrosDL.ObtenerTabla(oparm);
        //        if (lstParm.Count >= 0)
        //            try
        //            {
        //                decPorcIGV = decimal.Parse(lstParm[0].DescripcionCorta.Trim()) / decimal.Parse("100");
        //            }
        //            catch (Exception)
        //            {
        //                decPorcIGV = decimal.Parse(ConfigurationManager.AppSettings.Get("IGV"));
        //            }
        //        foreach (DocumentoPagoBE item in lstLiquidaciones)
        //        {                   
        //            decTotPrecio = decTotPrecio + item.Precio;
        //            decTotDescuento = decTotDescuento + item.Descuento;
        //        }
        //        decTotIgv = (decTotPrecio - decTotDescuento) * decPorcIGV;
        //        decTotNeto = decTotPrecio - decTotDescuento + decTotIgv;
        //        foreach (DocumentoPagoBE item2 in lstLiquidaciones)
        //        {
        //            item2.ImporteBruto = (decTotPrecio - decTotDescuento);
        //            item2.ImporteNeto = decTotNeto;
        //            item2.Igv = decTotIgv;
        //        }
       
        //    }
        //    catch (Exception ex)
        //    {
        //        FaultReason err = new FaultReason(ex.Message);
        //        throw new FaultException(err);
        //    }

        //    return lstLiquidaciones;
        //}

        #endregion
    }
}
